1. Field of the Invention
The present invention relates to a distributed network which is capable of dynamically changing media resource request metafiles, as well as the responses to those media resource requests by media servers in the network, to provide more efficient content delivery in the network. More particularly, the present invention relates to a system and method capable of being employed in a distributed network for intercepting a media resource request metafile or a response to the media resource request by a media server in the network, and intelligently re-writing the response before sending the response to the media server or back to the requesting client, to thus improve content delivery in the network.
2. Description of the Related Art
In recent years, the Internet has become a widely used medium for communicating and distributing information. Currently, the Internet can be used to transmit multimedia data, such as streaming audio and video data, from content providers to end users, such as businesses, small or home offices, and individuals.
As the use of the Internet increases, the Internet is becoming more and more congested. Since the Internet is essentially a network of connected computers distributed throughout the world, the activity performed by each computer or server to transfer information from a particular source to a particular destination naturally increases in conjunction with increased Internet use. Each computer is generally referred to us as a “node” with the transfer of data from one computer or node to another being commonly referred to as a “hop.”A user connecting to a Web site to read information is concerned with how quickly the page displays. Each Web page usually consists of 20–30 objects, and loading each object requires a separate request to the Web server. It can easily be determined how many visitors can access the content on a Web server at one time by examining the number of objects on a Web page. For example, if a Web page has 50 objects and a Pentium 233 network can handle approximately 250–300 URL connections a second, six people can access the server simultaneously and have the objects delivered in a timely manner. Once the entire page is delivered, there is no further interaction with the server until the user clicks on an object on the page. Until such action occurs, the server can process requests from other users.
Users expect a page to load quickly when they connect to a Web site, just as they expect the light to come on when they flip a switch, or a dial tone to sound when they pick up the phone, Internet users are increasingly expecting the page they request to load immediately. The more objects on the Web page, the longer it takes the contents of the page to load entirely. A page with 50 objects needs to connect with the server 50 times. Although the latency between connections is milliseconds, the latency can accumulate to a degree where it is unacceptable to a user.
A user connecting to a streaming media server, on the other hand, is concerned with the smoothness of the stream being viewed. Typically, only one connection is made for each video stream, but the connection to the server must be maintained for the duration of the stream. In a streaming media network, a persistent connection exists between the client and server. In this environment, a more important metric is the number of concurrent users (clients) that can connect to the server to watch a stream. Once the connection is made, a server plays the stream until it is completed or is terminated by a user.
Accordingly, in a streaming network, latency is not the dominant concern. Once the connection is established, streaming occurs in real time. A slight delay in establishing the connection is acceptable because the viewer will be watching the stream for a while. It is more important that there be a persistent connection. Also, once viewers incur the delay at the request time, they are watching the stream in a slightly delayed mode. The main concern while watching a stream is jitter and packet loss.
As can be appreciated from the above, due to the huge volume of data that each computer or node is transferring on a daily basis, it is becoming more and more necessary to minimize the amount of hops that are required to transfer data from a source to a particular destination or end user, thus minimizing the amount of computers or nodes needed for a data transfer. Hence, the need exists to distribute servers closer to the end users in terms of the amounts of hops required for the server to reach the end user.
In addition, media resource requests are performed in many ways by a client (e.g., an end user), such as inside of a real time streaming protocol (RTSP) connection or by a simple hyper text transfer protocol (HTTP) request. Metafiles are the typical response for a media request. However the response can also come inside of a binary file or the protocol being used between the client and server. In each of these cases, they are similar in that the response served by an Internet client-server application allows sending links to a resource rather than having to send the resource itself. These files and/or response information indicate to the client the location of requested media, i.e., where it should connect to and in what order. In video serving applications, metafiles allow content providers to create playlists of video clips, but metafiles can also be used to help define events and other information such as the author or resource owner. Further, many new options are being added into these metafiles which make their contents more of a scriptable language to handle conditions and other more dynamic needs.
Presently, metafiles are either statically or dynamically generated by a centralized web server. Further, once a metafile is sent to a client, there is no way to change the metafile after it leaves the origin server. Distributed networks currently need to write metafiles from a centralized location and thus understand where the client request is coming from in order to send it to a remote server for the requested resource.
Accordingly, a need exists for a distributed network such as those described above to be capable of dynamically changing media resource request metafiles, as well as the responses to those media resource requests by media servers in the network, to provide more efficient content delivery capability in the network.